package com.edu.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.SQLIntegrityConstraintViolationException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;


import com.edu.bean.User;
import com.edu.service.UserService;
import com.edu.service.impl.UserServiceImpl;
import java.util.UUID;

@MultipartConfig
@WebServlet("/addUser.do")
	public class AddUserServlet extends HttpServlet {
	    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	        UserService us = new UserServiceImpl();
	        String username = request.getParameter("username");
	        String password = request.getParameter("password");
	        String sex = request.getParameter("sex");
	        String realname = request.getParameter("realname");
	        String email = request.getParameter("email");
	        String telephone = request.getParameter("telephone");
	        String idNum = request.getParameter("idNum");
	        Part part = request.getPart("headimg");
	        User user = new User(username,password,realname,sex,email,telephone,idNum);
	        String savePath="";
	    	if(part.getSize()>0 ) {
	    		if(part.getSize() <=1024*1024 || part.getContentType().contains("image")) {
	    			//生成一个独一无二的文件名.UUID，用户名_时间戳_原始文件名
	    			String saveName = username+"_"+System.currentTimeMillis()+part.getSubmittedFileName();
	    			//把文件存储到服务器的headImg路径下（真实路径）
	    			savePath = "c:/PhaetonCommunityImg/headImgs/"+saveName;
	    			//访问路径存在数据库，取出来之后直接拼字img下面的src的路径下
	    			String visitPath = "/PhaetonCommunity/headImgs/"+saveName;
	    			//用户上传的文件需要复制到真实保存路径
	    			part.write(savePath);
	    			user.setHeadimg(visitPath);
	    		}else {
	    			request.setAttribute("headimgMag","图片必须小于1m");
	    			return;
	    		}
	    	}
	    	int result = us.addUser(user);
	    	if(result == -1){
	    		//添加失败时，应该把上面保存在服务器里的图片删掉
	    		File file = new File(savePath);
	    		if(file.exists()) {
	    			file.delete();
	    		}
	    		request.setAttribute("msg","用户名已经存在");
	    	} 
	    }

	}
